package views; import java.awt.GridLayout; import java.text.ParseException; import java.util.ArrayList; import java.util.Iterator; import java.util.Map.Entry; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JRadioButton; import javax.swing.JTextField; import controllers.AdminFrameController; import controllers.SerializableManager; import controllers.UserFrameController; import models.Account; import models.Bank; import models.Person; public class LoginFrame extends JPanel { private static JRadioButton userButton; private JRadioButton adminButton; private static String userName; private String user; private static final long serialVersionUID = 1L; private static String[] buttonNames = { "Login", "Cancel" }; private Bank bank = new Bank(); private SerializableManager manager = new SerializableManager(); @SuppressWarnings("deprecation") public void createLoginWindow() throws ParseException { bank.setContent(manager.deserializeBank().getContent()); JPanel loginPanel; userButton = new JRadioButton("User"); userButton.setSelected(true); adminButton = new JRadioButton("Admin"); adminButton.setSelected(false); ButtonGroup group = new ButtonGroup(); group.add(userButton); group.add(adminButton); JLabel usernameLabel = new JLabel("Username:", JLabel.LEFT); JTextField usernameText = new JTextField(10); JLabel passwordLabel = new JLabel("Password:", JLabel.LEFT); JPasswordField passwordText = new JPasswordField(10); loginPanel = new JPanel(false); loginPanel.setLayout(new BoxLayout(loginPanel, BoxLayout.Y_AXIS)); JPanel logPanel = new JPanel(); logPanel.setLayout(new GridLayout(0, 3)); logPanel.add(new JLabel("Login as:")); logPanel.add(userButton); logPanel.add(adminButton); JPanel namePanel = new JPanel(); namePanel.setLayout(new GridLayout(0, 1)); namePanel.add(usernameLabel); namePanel.add(usernameText); JPanel passwordPanel = new JPanel(); passwordPanel.setLayout(new GridLayout(0, 1)); passwordPanel.add(passwordLabel); passwordPanel.add(passwordText); loginPanel.add(logPanel); loginPanel.add(namePanel); loginPanel.add(passwordPanel); int option = JOptionPane.showOptionDialog(null, loginPanel, "Login Order ", JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, buttonNames, buttonNames[0]); if ((option == 0) && (adminButton.isSelected()) && (usernameText.getText().equals("admin")) && (passwordText.getText().equals("1111"))) { adminButton.setSelected(true); new AdminFrameController(); } else if ((option == 0) && (userButton.isSelected())) { Iterator<Entry<Person, ArrayList<Account>>> iterator = bank.getContent().entrySet().iterator(); while (iterator.hasNext()) { Entry<Person, ArrayList<Account>> entry = iterator.next(); if (usernameText.getText().equals(entry.getKey().getName()) && (passwordText.getText().equals("1234"))) { userButton.setSelected(true); setUserName(usernameText.getText()); new UserFrameController(); } } } else { JOptionPane.showMessageDialog(null, "Wrong username or password!"); createLoginWindow(); } } public static JRadioButton getUserButton() { return userButton; } public void setAdminButton(JRadioButton adminButton) { this.adminButton = adminButton; } public static String getUserName() { return userName; } public void setUserName(String userName) { LoginFrame.userName = userName; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } }